home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / powerd / lib / powerd.lha / powerd_ppc / RealVal.ass < prev    next >
Encoding:
Text File  |  1980-11-20  |  3.3 KB  |  230 lines

  1.     .text
  2.     .sdreg    r2
  3. ###############################################################################
  4. # name           offset
  5. # sign           0+0(r13)
  6. # pre            4+0(r13)
  7. # m              8+0(r13)
  8. # n              12+0(r13)
  9. # o              16+0(r13)
  10. # f              24+0(r13)
  11. # d              32+0(r13)
  12. # args ###########################
  13. # str            40+0(r13)
  14. # pos            44+0(r13)
  15.     .align    2
  16. _RealVal:    
  17.     stwu    r1,-76(r1)
  18.     stw    r13,24(r1)
  19.     mr    r13,r1
  20.     stw    r3,40+28(r13)
  21.     stw    r4,44+28(r13)
  22.     lfd    f1,n0(r2)
  23.     stfd    f1,32+28(r13)
  24.     lfd    f1,n1(r2)
  25.     stfd    f1,16+28(r13)
  26.     li    r3,-1
  27.     sth    r3,4+28(r13)
  28. while0:    
  29.     lwz    r5,40+28(r13)
  30.     lwz    r6,44+28(r13)
  31.     lbzx    r4,r5,r6
  32.     cmpwi    r4,32
  33.     beq    $+12
  34.     li    r4,0
  35.     b    $+8
  36.     li    r4,-1
  37.     mr    r3,r4
  38.     lwz    r5,40+28(r13)
  39.     lwz    r6,44+28(r13)
  40.     lbzx    r4,r5,r6
  41.     cmpwi    r4,10
  42.     beq    $+12
  43.     li    r4,0
  44.     b    $+8
  45.     li    r4,-1
  46.     or    r3,r3,r4
  47.     lwz    r5,40+28(r13)
  48.     lwz    r6,44+28(r13)
  49.     lbzx    r4,r5,r6
  50.     cmpwi    r4,9
  51.     beq    $+12
  52.     li    r4,0
  53.     b    $+8
  54.     li    r4,-1
  55.     or    r3,r3,r4
  56.     mr.    r3,r3
  57.     beq    end0
  58.     lwz    r3,44+28(r13)
  59.     addi    r3,r3,1
  60.     stw    r3,44+28(r13)
  61.     b    while0
  62. end0:    
  63. if1:    
  64.     lwz    r4,40+28(r13)
  65.     lwz    r5,44+28(r13)
  66.     lbzx    r3,r4,r5
  67.     cmpwi    r3,45
  68.     beq    $+12
  69.     li    r3,0
  70.     b    $+8
  71.     li    r3,-1
  72.     mr.    r3,r3
  73.     beq    elseif1_1
  74.     li    r3,-1
  75.     stw    r3,0+28(r13)
  76.     lwz    r3,44+28(r13)
  77.     addi    r3,r3,1
  78.     stw    r3,44+28(r13)
  79.     b    end1
  80. elseif1_1:
  81.  
  82.     li    r3,1
  83.     stw    r3,0+28(r13)
  84. end1:    
  85. while5:    
  86.     lwz    r4,40+28(r13)
  87.     lwz    r5,44+28(r13)
  88.     lbzx    r3,r4,r5
  89.     stw    r3,8+28(r13)
  90.     lwz    r0,8+28(r13)
  91.     mr.    r0,r0
  92.     beq    end5
  93. if6:    
  94.     lwz    r4,8+28(r13)
  95.     cmpwi    r4,48
  96.     bge    $+12
  97.     li    r4,0
  98.     b    $+8
  99.     li    r4,-1
  100.     mr    r3,r4
  101.     lwz    r4,8+28(r13)
  102.     cmpwi    r4,57
  103.     ble    $+12
  104.     li    r4,0
  105.     b    $+8
  106.     li    r4,-1
  107.     and    r3,r3,r4
  108.     mr.    r3,r3
  109.     beq    elseif6_1
  110.     lwz    r3,8+28(r13)
  111.     subi    r3,r3,48
  112.     stw    r3,12+28(r13)
  113. if8:    
  114.     lhz    r0,4+28(r13)
  115.     mr.    r0,r0
  116.     beq    elseif8_1
  117.     lfd    f1,32+28(r13)
  118.     lfd    f2,n2(r2)
  119.     fmul    f1,f1,f2
  120.     stfd    f1,32+28(r13)
  121.     lfd    f1,32+28(r13)
  122.     lwz    r3,12+28(r13)
  123.     lis    r0,17200
  124.     stw    r0,-8(r1)
  125.     xoris    r0,r3,0x8000
  126.     stw    r0,-4(r1)
  127.     lfd    f0,-8(r1)
  128.     lfd    f2,conv(r2)
  129.     fsub    f2,f0,f2
  130.     fadd    f1,f1,f2
  131.     stfd    f1,32+28(r13)
  132.     b    end8
  133. elseif8_1:
  134.  
  135.     lwz    r3,12+28(r13)
  136.     lis    r0,17200
  137.     stw    r0,-8(r1)
  138.     xoris    r0,r3,0x8000
  139.     stw    r0,-4(r1)
  140.     lfd    f0,-8(r1)
  141.     lfd    f1,conv(r2)
  142.     fsub    f1,f0,f1
  143.     stfd    f1,24+28(r13)
  144.     lfd    f1,24+28(r13)
  145.     lfd    f2,16+28(r13)
  146.     fmul    f1,f1,f2
  147.     stfd    f1,24+28(r13)
  148.     lfd    f1,32+28(r13)
  149.     lfd    f2,24+28(r13)
  150.     fadd    f1,f1,f2
  151.     stfd    f1,32+28(r13)
  152.     lfd    f1,16+28(r13)
  153.     lfd    f2,n3(r2)
  154.     fmul    f1,f1,f2
  155.     stfd    f1,16+28(r13)
  156. end8:    
  157.     b    end6
  158. elseif6_1:
  159.  
  160.     lwz    r3,8+28(r13)
  161.     cmpwi    r3,46
  162.     beq    $+12
  163.     li    r3,0
  164.     b    $+8
  165.     li    r3,-1
  166.     mr.    r3,r3
  167.     beq    elseif6_2
  168.     li    r3,0
  169.     sth    r3,4+28(r13)
  170.     b    end6
  171. elseif6_2:
  172.  
  173.     lfd    f1,32+28(r13)
  174.     lwz    r3,0+28(r13)
  175.     lis    r0,17200
  176.     stw    r0,-8(r1)
  177.     xoris    r0,r3,0x8000
  178.     stw    r0,-4(r1)
  179.     lfd    f0,-8(r1)
  180.     lfd    f2,conv(r2)
  181.     fsub    f2,f0,f2
  182.     fmul    f1,f1,f2
  183.     fmr    f1,f1
  184.     lwz    r3,44+28(r13)
  185.     b    RealValfinish
  186. end6:    
  187.     lwz    r3,44+28(r13)
  188.     addi    r3,r3,1
  189.     stw    r3,44+28(r13)
  190.     b    while5
  191. end5:    
  192. RealValend:
  193.  
  194.     lfd    f1,32+28(r13)
  195.     lwz    r3,0+28(r13)
  196.     lis    r0,17200
  197.     stw    r0,-8(r1)
  198.     xoris    r0,r3,0x8000
  199.     stw    r0,-4(r1)
  200.     lfd    f0,-8(r1)
  201.     lfd    f2,conv(r2)
  202.     fsub    f2,f0,f2
  203.     fmul    f1,f1,f2
  204.     fmr    f1,f1
  205.     lwz    r3,44+28(r13)
  206. RealValfinish:
  207.  
  208.     lwz    r13,24(r1)
  209.     addi    r1,r1,76
  210.     blr
  211.  
  212.     .global    _RealVal
  213.     .type    _RealVal,2
  214.     .size    _RealVal,$-_RealVal
  215.     .tocd
  216.     .extern    _PowerPCBase
  217.     .extern    _stdin
  218.     .extern    _stdout
  219.     .extern    _arg
  220.     .extern    _GfxBase
  221.     .extern    _IntuitionBase
  222.     .extern    _DOSBase
  223.     .extern    _ExecBase
  224.     .data
  225. n0:    .long    0x0       ,0x0       
  226. n1:    .long    0x3FB99999,0x99999999
  227. n2:    .long    0x40240000,0x0       
  228.     .set    n3,n1
  229. conv:    .long    0x43300000,0x80000000
  230.